import { delcommafy } from "@/utils/index";
import { numThousandF } from "@/filters/index"

export default {
  bind(el, binding) {
    let inputTag = el.querySelector("input");
    let position = binding.modifiers.plus;
    let bindObj = binding.value;
    let reg = null;
    /**保留小数点位数，不传时默认保留2位 */
    if (bindObj.tofixed === null) {
      bindObj.tofixed = 2;
    }
    if(bindObj.tofixed*1>0) { /**保留小数位正则 */
      reg = position ? (String.raw `^(\d*)(\.?\d{0,${bindObj.tofixed}})`) : (String.raw `^(\-|\+?)(\d*)(\.?\d{0,${bindObj.tofixed}})`)
    }else { /**保留整数正则 */
      reg = position ? (String.raw `^(\d*)`) : (String.raw `^(\-|\+?)(\d*)`)
    }
    // inputTag.addEventListener("focus", () => { /**自定义聚焦事件，解除千分位 */
    //   inputTag.value = delcommafy(inputTag.value);
    // })
    inputTag.addEventListener("input", () => { /**自定义输入事件，限制输入数据 */
      inputTag.value = inputTag.value.match(new RegExp(reg, "g"));
    })
    inputTag.addEventListener("blur", () => { /**自定义失去焦点事件 */
      if(bindObj.formate) { /**需要格式化数据 */
        if(inputTag.value === null || inputTag.value === "") { /**为null或空时赋值为空，避免表单校验问题 */
          inputTag.value = "";
        } else { /**当数据为非空时，绑定千分位 */
          inputTag.value = numThousandF(inputTag.value.match(new RegExp(reg, "g"))[0]);
        }
      } else { /**不需要格式化数据 */
        inputTag.value = inputTag.value.match(new RegExp(reg, "g"))[0];
      }
      if (bindObj.fn) { /**绑定回执函数 */
        bindObj.fn();
      }
    })
  }
}
